/**
 * 表单：复合布局
 * 
 * @author XiongChun
 * @since 2010-11-20
 */
Ext.onReady(function() {
	var qForm = new Ext.form.FormPanel({
				region : 'north',
				margins : '3 3 3 3',
				title : '<span class="commoncss">查询条件<span>',
				collapsible : true,
				border : true,
				labelWidth : 90, // 标签宽度
				// frame : true, //是否渲染表单面板背景色
				labelAlign : 'right', // 标签对齐方式
				bodyStyle : 'padding:3 5 0', // 表单元素和表单面板的边距
				buttonAlign : 'center',
				height : 60,
				items : [{
					layout : 'column',
					border : false,
					items : [{
								columnWidth : .5,
								layout : 'form',
								labelWidth : 70, // 标签宽度
								defaultType : 'textfield',
								border : false,
								items : [new Ext.form.RadioGroup({
											name : 'qstatus',
											id : 'qstatus',
											hideLabel : false,
											columns : 4,
											vertical : false,
											items : [{
														boxLabel : '所有',
														inputValue : '',
														name : 'qstatus',
														checked : true
													}, {
														boxLabel : '未开始',
														inputValue : '0',
														name : 'qstatus'
													}, {
														boxLabel : '中检中',
														inputValue : '1',
														name : 'qstatus'
													}, {
														boxLabel : '中检结束',
														inputValue : '2',
														name : 'qstatus'
													}],
											anchor : '80%'
										})]
							}, {
								columnWidth : .33,
								layout : 'form',
								labelWidth : 70, // 标签宽度
								defaultType : 'textfield',
								border : false,
								items : [new Ext.Button({
											text : '查询',
											iconCls : 'previewIcon',
											handler : function() {
												queryInspectPlan(qForm.getForm());
											}
										})]
							}]
				}]
			});
	
	// 定义列模型
	var cm = new Ext.grid.ColumnModel([{
				header : '中检计划ID',
				dataIndex : 'id',
				sortable : true
			}, {
				header : '中检计划名称',
				dataIndex : 'inspect_plan_name'
			}, {
				header : '中检开始日期',
				dataIndex : 'start_date'
			}, {
				header : '中检终止日期',
				dataIndex : 'end_date'
			}, {
				header : '中检状态',
				dataIndex : 'status'
			}, {
				header : "中检材料",
				width : 80,
				align : 'center',
				dataIndex : 'rownum',
				renderer : function(data, cell, record, rowIndex, columnIndex,
						store) {
					return "<a href='#'>查看中检材料</a>";
				}
			}, {
				header : "操作",
				width : 80,
				align : 'center',
				dataIndex : 'rownum',
				renderer : function(data, cell, record, rowIndex, columnIndex,
						store) {
					var now = new Date();
					var str = now.toLocaleDateString();
					if(now.getMonth()+1<10){str = str.replace(/年/, "-0")}else{str = str.replace(/年/, "-")};
					if(now.getDate()+1<10){str = str.replace(/月/, "-0")}else{str = str.replace(/月/, "-")};
					str = str.replace(/日/, "")
					if(record.data.start_date <= str && str <= record.data.end_date){
						return "<INPUT type='button' value='进入中检'>";
					}else{
						return "";
					}
				}
			}]);

	/**
	 * 数据存储
	 */
	var store = new Ext.data.Store({
				// 获取数据的方式
				proxy : new Ext.data.HttpProxy({
							url : 'longitudinalProject.do?reqCode=queryMidInspectPlan'
						}),
				// 数据读取器
				reader : new Ext.data.JsonReader({
							totalProperty : 'TOTALCOUNT', // 记录总数
							root : 'ROOT' // Json中的列表数据根节点
						}, [{
									name : 'id'
								}, {
									name : 'inspect_plan_name'
								}, {
									name : 'start_date'
								}, {
									name : 'end_date'
								}, {
									name : 'status'
								}])
			});

	// 翻页排序时带上查询条件
	store.on('beforeload', function() {
				this.baseParams = qForm.getForm().getValues();
			});
	// 每页显示条数下拉选择框
	var pagesize_combo = new Ext.form.ComboBox({
				name : 'pagesize',
				triggerAction : 'all',
				mode : 'local',
				store : new Ext.data.ArrayStore({
							fields : ['value', 'text'],
							data : [[10, '10条/页'], [20, '20条/页'],
									[50, '50条/页'], [100, '100条/页'],
									[250, '250条/页'], [500, '500条/页']]
						}),
				valueField : 'value',
				displayField : 'text',
				value : '20',
				editable : false,
				width : 85
			});
	var number = parseInt(pagesize_combo.getValue());
	// 改变每页显示条数reload数据
	pagesize_combo.on("select", function(comboBox) {
				bbar.pageSize = parseInt(comboBox.getValue());
				number = parseInt(comboBox.getValue());
				store.reload({
							params : {
								start : 0,
								limit : bbar.pageSize
							}
						});
			});

	var tbar = new Ext.Toolbar({
				items : [{
							text : '新建中检计划',
							id : 'tbi_edit',
							iconCls : 'edit1Icon',
							handler : function() {
								planWindow.show(); // 显示窗口
							}
						}]
			});

	// 分页工具栏
	var bbar = new Ext.PagingToolbar({
				pageSize : number,
				store : store,
				displayInfo : true,
				displayMsg : '显示{0}条到{1}条,共{2}条',
				plugins : new Ext.ux.ProgressBarPager(), // 分页进度条
				emptyMsg : "没有符合条件的记录",
				items : ['-', '&nbsp;&nbsp;', pagesize_combo]
			});

	// 表格实例
	var grid = new Ext.grid.GridPanel({
				region : 'center', // 和VIEWPORT布局模型对应，充当center区域布局
				margins : '3 3 3 3',
				border : false,
				// 表格面板标题,默认为粗体，我不喜欢粗体，这里设置样式将其格式为正常字体
				title : '<span class="commoncss">查询结果</span>',
				height : 400,
				autoScroll : true,
				frame : true,
				store : store, // 数据存储
				stripeRows : true, // 斑马线
				cm : cm, // 列模型
				bbar : bbar,// 分页工具栏
				tbar : tbar,
				viewConfig : {
					// 不产横向生滚动条, 各列自动扩展自动压缩, 适用于列数比较少的情况
					forceFit : true
				},
				loadMask : {
					msg : '正在加载表格数据,请稍等...'
				}
			});
	grid.on('cellclick', function(pGrid, rowIndex, columnIndex, event) {
		var row = store.getById(store.data.items[rowIndex].id );
    	var start_date = row.get("start_date");
    	var end_date = row.get("end_date");
		var now = new Date();
		var str = now.toLocaleDateString();
		if(now.getMonth()+1<10){str = str.replace(/年/, "-0")}else{str = str.replace(/年/, "-")};
		if(now.getDate()+1<10){str = str.replace(/月/, "-0")}else{str = str.replace(/月/, "-")};
		str = str.replace(/日/, "")
		
		if (columnIndex == 5 && start_date <= str && str <= end_date) {
			var record = grid.getSelectionModel().getSelected();
		}
		
		if (columnIndex == 6 && start_date <= str && str <= end_date) {
			var record = grid.getSelectionModel().getSelected();
		}
	});

	// 布局
	var viewport = new Ext.Viewport({
				layout : 'border',
				items : [qForm, grid]
			});

	var project_tbar = new Ext.Toolbar({
				items : [{
							text : '添加署名人员',
							iconCls : 'addIcon',
							id : 'tbi_audit',
							handler : function() {
								projectWindow.show();
							}
						}]
			});
	var project_record = Ext.data.Record.create([{
				name : 'id',
				mapping : 'id'
			}, {
				name : 'name',
				mapping : 'name'
			}, {
				name : 'project_num',
				mapping : 'project_num'
			}, {
				name : 'charger_name',
				mapping : 'charger_name'
			}, {
				name : 'project_department',
				mapping : 'project_department'
			}]);
	var project_store = new Ext.data.Store();

	var rownum = new Ext.grid.RowNumberer({
				header : 'NO',
				width : 28
			});
	var project_cm = new Ext.grid.ColumnModel([rownum, {
				header : "纵向项目ID",
				dataIndex : "id"
			}, {
				header : "项目名称",
				dataIndex : "name"
			}, {
				header : "纵向项目编号",
				dataIndex : "project_num"
			}, {
				header : "项目负责人",
				dataIndex : "charger_name"
			}, {
				header : "项目所属单位",
				dataIndex : "project_department"
			},{
				header : "操作",
				width : 80,
				align : 'center',
				dataIndex : 'rownum',
				renderer : function(data, cell, record, rowIndex, columnIndex,
						store) {
					return "<INPUT type='button' value='删除'>";
				}
			}]);

	var project_grid = new Ext.grid.GridPanel({
				region : 'center', // 和VIEWPORT布局模型对应，充当center区域布局
				margins : '3 3 3 3',
				// collapsible : true,
				border : true,
				store : project_store,
				// 表格面板标题,默认为粗体，我不喜欢粗体，这里设置样式将其格式为正常字体
				autoHeight : true,
				autoScroll : true,
				frame : true,
				stripeRows : true, // 斑马线
				cm : project_cm, // 列模型
				tbar : project_tbar, // 表格工具栏
				viewConfig : {
					// 不产横向生滚动条, 各列自动扩展自动压缩, 适用于列数比较少的情况
					forceFit : true
				},
				loadMask : {
					msg : '正在加载表格数据,请稍等...'
				}
			});

	project_grid.on('cellclick', function(pGrid, rowIndex, columnIndex, event) {
				if (columnIndex == 6) {
					var x = project_store.getAt(rowIndex);
					project_store.remove(x);
				}
			});
			
			
	var planForm = new Ext.form.FormPanel({
		border : false,
		labelWidth : 80, // 标签宽度
		fileUpload : true, // 一定要设置这个属性,否则获取不到上传对象的
		autoScroll : true,
		labelAlign : 'right', // 标签对齐方式
		bodyStyle : 'padding:3 5 0', // 表单元素和表单面板的边距
		buttonAlign : 'center',
		height : 300,
		items : [{
					fieldLabel : '中检计划名称',
					labelWidth : 200,
					name : 'inspect_plan_name',
					xtype : 'textfield',
					allowBlank : false,
					labelStyle : 'color:blue;',
					maxlength : 128,
					anchor : '100%'
				}, {
					layout : 'column',
					border : true,
					border : false,
					labelWidth : 60,
					anchor : '100%',
					items : [{
								columnWidth : .5,
								layout : 'form',
								labelWidth : 80, // 标签宽度
								border : false,
								items : [{
											fieldLabel : '中检开始日',
											name : 'start_date',
											xtype : 'datefield', // 设置为文字输入框类型
											format : 'Y-m-d', // 日期格式化
											value : new Date(),
											labelStyle : 'color:blue;',
											allowBlank : false,
											anchor : '100%'
										}, new Ext.form.RadioGroup({
													name : 'project_category',
													id : 'project_category',
													fieldLabel : '学科门类',
													hideLabel : false,
													columns : 2,
													vertical : false,
													items : [{
																boxLabel : '社会科学类',
																inputValue : '1',
																name : 'project_category',
																checked : true
															}, {
																boxLabel : '非社会科学类',
																inputValue : '0',
																name : 'project_category'
															}],
													anchor : '100%'
												})]
							}, {
								columnWidth : .5,
								layout : 'form',
								labelWidth : 80, // 标签宽度
								border : false,
								items : [{
									fieldLabel : '中检结束日',
									name : 'end_date',
									xtype : 'datefield', // 设置为文字输入框类型
									format : 'Y-m-d', // 日期格式化
									value : new Date(),
									labelStyle : 'color:blue;',
									allowBlank : false,
									anchor : '100%'
								}]
							}]

				},{
					fieldLabel : '上传附件',
					id : 'file1',
					name : 'file1', // 必须为file1/file2/file3/file4/file5.目前Web标准上传模式支持最多5个文件的批量上传
					xtype : 'fileuploadfield', // 上传字段
					allowBlank : true,
					anchor : '100%'
				}, {
					xtype : 'fieldset',
					title : '纵向项目列表',
					collapsible : true,
					autoHeight : true,
					items : [project_grid],
					anchor : '100%'
				}]
	});
	
	var planWindow = new Ext.Window({
				title : '<span class="commoncss">纵向项目申报计划</span>', // 窗口标题
				layout : 'fit', // 设置窗口布局模式
				width : 650, // 窗口宽度
				height : 350, // 窗口高度
				closable : false, // 是否可关闭
				collapsible : true, // 是否可收缩
				maximizable : true, // 设置是否可以最大化
				border : false, // 边框线设置
				constrain : true, // 设置窗口是否可以溢出父容器
				animateTarget : Ext.getBody(),
				closeAction : 'hide', // 关闭策略
				pageY : 20, // 页面定位Y坐标
				pageX : document.body.clientWidth / 2 - 600 / 2, // 页面定位X坐标
				items : [planForm],
				// 嵌入的表单面板
				buttons : [{
							text : '添加',
							iconCls : 'acceptIcon',
							handler : function() {
								submitThePlanForm();
							}
						}, {
							text : '重置',
							iconCls : 'tbar_synchronizeIcon',
							handler : function() {
								planForm.getForm().reset();
							}
						}, {
							text : '关闭',
							iconCls : 'deleteIcon',
							handler : function() {
								planWindow.hide();
							}
						}]
			});
			
	var lprojectStore = new Ext.data.Store({
						proxy : new Ext.data.HttpProxy({
									url : 'longitudinalProject.do?reqCode=queryProjectDatas'
								}),
						reader : new Ext.data.JsonReader({}, [{
											name : 'value'
										}, {
											name : 'text'
										}])
					});

	var lprojectCombo = new Ext.form.ComboBox({
						hiddenName : 'id',
						name : 'id',
						id : 'lproject_id',
						fieldLabel : '纵向项目',
						emptyText : '请选择纵向项目...',
						triggerAction : 'all',
						store : lprojectStore,
						displayField : 'text',
						valueField : 'value',
						loadingText : '正在加载数据...',
						mode : 'remote', // 数据会自动读取,如果设置为local又调用了store.load()则会读取2次；也可以将其设置为local，然后通过store.load()方法来读取
						forceSelection : true,
						typeAhead : true,
						resizable : true,
						editable : false,
						allowBlank : false,
						anchor : '100%'
					});

	lprojectCombo.on('select', function() {
				var value = lprojectCombo.getValue();
				projectForm.form.load({
							waitMsg : '正在处理数据,请稍候...',// 提示信息
							waitTitle : '提示',// 标题
							url : 'longitudinalProject.do?reqCode=getLproject',// 请求的url地址
							params : {
										projectid : value
									},
							// method : 'GET',// 请求方式
							success : function(form, action) {// 加载成功的处理函数
								var msg = action.result.data.msg;
								if (msg == 'ok') {
									Ext.getCmp('btnSave').enable();
									return;
								}
								Ext.Msg.alert('提示', msg);
								Ext.getCmp('btnSave').disable();
							},
							failure : function(form, action) {// 加载失败的处理函数
								Ext.Msg.alert('提示', '数据查询失败,错误类型:' + action.failureType);
							}
						});
	});

	var projectForm = new Ext.form.FormPanel({
				border : false,
				labelWidth : 60, // 标签宽度
				labelAlign : 'right', // 标签对齐方式
				bodyStyle : 'padding:3 5 0', // 表单元素和表单面板的边距
				buttonAlign : 'center',
				height : 120,
				items : [{
					layout : 'column',
					border : false,
					items : [{
						columnWidth : .5,
						layout : 'form',
						labelWidth : 60, // 标签宽度
						defaultType : 'textfield',
						border : false,
						items : [lprojectCombo,{
									fieldLabel : '项目编号',
									name : 'project_num',
									readOnly : true,
									xtype : 'textfield', // 设置为数字输入框类型
									anchor : '100%'
								},{
									fieldLabel : '批准号',
									name : 'register_number',
									readOnly : true,
									xtype : 'textfield', // 设置为数字输入框类型
									anchor : '100%'
								}]
					}, {
						columnWidth : .5,
						layout : 'form',
						labelWidth : 60, // 标签宽度
						defaultType : 'textfield',
						border : false,
						items : [{
									fieldLabel : '负责人', // 标签
									id : 'charger_name',
									name : 'charger_name', // name:后台根据此name属性取值
									readOnly : true,
									anchor : '100%' // 宽度百分比
								}, {
									fieldLabel : '单位名称', // 标签
									name : 'project_department', // name:后台根据此name属性取值
									readOnly : true,
									xtype : 'textfield',
									anchor : '100%'// 宽度百分比
								},{
									fieldLabel : '项目经费',
									name : 'amount',
									readOnly : true,
									xtype : 'textfield', // 设置为数字输入框类型
									anchor : '100%'
								}]
					}]
				}]
			});

	var projectWindow = new Ext.Window({
				title : '<span class="commoncss">添加纵向项目</span>', // 窗口标题
				layout : 'fit', // 设置窗口布局模式
				width : 500, // 窗口宽度
				height : 180, // 窗口高度
				closable : false, // 是否可关闭
				closeAction : 'hide', // 关闭策略
				collapsible : true, // 是否可收缩
				maximizable : false, // 设置是否可以最大化
				border : true, // 边框线设置
				constrain : true,
				titleCollapse : true,
				animateTarget : Ext.getBody(),
				pageY : 30, // 页面定位Y坐标
				pageX : document.body.clientWidth / 2 - 400 / 2, // 页面定位X坐标
				// 设置窗口是否可以溢出父容器
				buttonAlign : 'right',
				items : [projectForm],
				buttons : [{
							text : '添加',
							iconCls : 'acceptIcon',
							handler : function() {
								submitTheProjectForm();
							}
						}, {
							text : '重置',
							iconCls : 'tbar_synchronizeIcon',
							handler : function() {
								projectForm.getForm().reset();
							}
						}, {
							text : '关闭',
							iconCls : 'deleteIcon',
							handler : function() {
								projectWindow.hide();
							}
						}]
			});
	
	function submitThePlanForm() {
		if (!planForm.form.isValid()) {
			return;
		}
		planForm.form.submit({
					url : 'longitudinalProject.do?reqCode=saveInspectPlan',
					waitTitle : '提示',
					method : 'POST',
					waitMsg : '正在处理数据,请稍候...',
					success : function(form, action) {
						Ext.MessageBox.alert('提示', action.result.msg);
					},
					failure : function(form, action) {
						Ext.MessageBox.alert('提示', '数据保存失败');
					},
					params : {
						strJson : Ext.encode(lstAddRecord)
					}
				});
	}
	
	function queryInspectPlan(pForm) {
		var params = pForm.getValues();
		params.start = 0;
		params.limit = bbar.pageSize;
		store.load({
					params : params
				});
	}
	
	var lstAddRecord = new Array();
	
	function submitTheProjectForm() {
		if (!projectForm.getForm().isValid()) {
			return;
		}
		var params = projectForm.form.getValues();
		var now = new Date();
		var str = now.toLocaleDateString();
		if(now.getMonth()+1<10){str = str.replace(/年/, "-0")}else{str = str.replace(/年/, "-")};
		if(now.getDate()+1<10){str = str.replace(/月/, "-0")}else{str = str.replace(/月/, "-")};
		str = str.replace(/日/, "")
		
		var tempRecord = new project_record(params);
		tempRecord.data.name = Ext.get('lproject_id').dom.value;
		project_store.add(tempRecord);
		project_store.each(function(record) {
       		lstAddRecord.push(record.data);
        });
        
	}
	
	
});
